<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>01.函数执行的代理拦截</title>
    </head>
    <body>
        <script>
            /**
             * 1.做一个拦截器Proxy，用来拦截对象进行一些逻辑处理，
             * 注意这个Proxy拦截器目前只在火狐浏览器下实现了兼容
             * IE、Google、Safari、Opera都暂不支持，稍微注意下
             * 2.let proxy = new Proxy();有两个参数，如下
             * 1).第一个参数是需要被代理的对象
             * 2).第二个参数是代理的一些配置方法
             */
             /**
              * 1.普通函数的运行拦截
              * 2.通过new的方式创建的类似面向对象的函数的运行拦截
              */
             // 再来看看通过new的方式创建的类似面向对象的函数的运行拦截
            function User () {
                console.log('I am a class');
            }

            var ClassProxy = new Proxy (User, {
                construct (target, arguments) {
                    console.log('I am also a class, just printing it before you');
                    return Reflect.construct (target, arguments);
                }
            });

            new ClassProxy ();
        </script>
    </body>
</html>
